package com.wl.designpattern.responsibility;

/**
 * 责任链模式
 *
 * Handler 定义处理请求的方法以及持有下一个Handler的引用
 * ConcreteHandler1、ConcreteHandler2 具体处理者 不处理则转给下个处理者
 * Client 要使用责任链模式的地方
 *
 * 应用场景
 * 多个对象处理同一请求时，但是具体由哪个对象去处理需要运行时做判断。
 * 具体处理者不明确的情况下，向这组对象提交了一个请求。
 *
 * 优点
 * 代码的解耦，请求者与处理者的隔离分开。
 * 易于扩展，新增处理者往链上加结点即可
 *
 * 缺点
 * 责任链长可能有性能问题
 *
 * android应用
 * 1.android事件分发机制
 * 2.okhttp
 *
 * Created by wangliang on 2021/2/22.
 */
public class Test {
    public static void main(String[] args) {
        Postman beijingPostman = new BeijingPostman();
        Postman shanghaiPostman = new ShanghaiPostman();

        beijingPostman.nextPostman = shanghaiPostman;

        //处理不同地区的快递，都是从首结点北京快递员开始
        System.out.println("有一个上海快递需要派送:");
        beijingPostman.handleDelivery("Shanghai");

        System.out.println("有一个北京快递需要派送:");
        beijingPostman.handleDelivery("Beijing");
    }
}
